﻿Partial Public Class Login_NuevoUsuario
    Inherits System.Web.UI.Page

#Region "Eventos"

    ''' <summary>
    ''' Este método se utiliza para vincular el formulario con el tema seleccionado.
    ''' </summary>
    ''' Primer evento que se dispara
    Protected Overloads Sub OnPreInit() Handles Me.PreInit

        'Aplicacion de Tema
        If Not Session("Tema") Is Nothing Then
            Page.Theme = Session("Tema").ToString
        End If

    End Sub

    ''' <summary>
    ''' Controla si está permitido en la aplicación crear un nuevo usuario si aún no se logueó al sistema.
    ''' </summary>
    ''' <remarks>Este método utiliza el parámetro de aplicación FreeRegistration del Web.config.</remarks>
    ''' <param name="sender">Objeto emisor del evento.</param>
    ''' <param name="e">Argumentos pasados por parámetro.</param>
    Private Sub CrearUsuario_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrearUsuario.Init

        'Verfica la propiedad para restringir el ingreso de un nuevo usuario sin loguearse.
        If System.Configuration.ConfigurationManager.AppSettings("freeregistration") = "Off" Then

            'Verificar si el usuario esta logueado
            Try
                Dim MembershipCurrentUser As MembershipUser

                MembershipCurrentUser = Membership.GetUser()

                If MembershipCurrentUser Is Nothing Then
                    'No hay usuario logueado

                    Response.Redirect("login.aspx")
                End If

            Catch ex As Exception

            End Try
        End If

    End Sub

    ''' <summary>
    ''' Método que se ejecuta una vez que un nuevo usuario se creó exitosamente en el modelo de seguridad de ASP.Net.
    ''' </summary>
    ''' <remarks>En este método, se agrega al usuario creado en ASP al modelo de seguridad del Framework</remarks>
    ''' <param name="sender">Objeto emisor del evento.</param>
    ''' <param name="e">Argumentos pasados por parámetro.</param>
    Private Sub CrearUsuario_CreatedUser(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrearUsuario.CreatedUser

        Try
            'Si esta logueado se llama al SP por un metodo del framework
            If Request.IsAuthenticated Then
                Dim aParametros As New ArrayList

                'Nombre de usuario
                aParametros.Add(CrearUsuario.UserName)
                'Password encripatada
                aParametros.Add(SystemFunctions.Strings.EncryptString(CrearUsuario.Password, KEY, SystemFunctions.Strings.Accion.ENCRYPT))

                Sql.ExecSP(ConnectionString, "wp_nuevo_usuario", aParametros)
            Else
                'Si no estas logueado se loguea con un usuario predeterminado

                'Componente de seguridad
                Dim sca As New StartFrame.BR.Sca
                Dim sUsuario, sClaveAcceso As String

                sUsuario = Common.Env.GetConfigValue("ServerUsr")
                sClaveAcceso = Common.Env.GetConfigValue("ServerUsr") 'La pass por del admin predeterminado es igual al usuario

                'Verifica si existe el operador dentro del sistema
                If sca.ExisteOperador(sUsuario) Then

                    If sca.Login(sUsuario, sClaveAcceso.ToLower) Then
                        'Propiedades de la Common
                        Common.Env.Operador = sUsuario
                        Common.Env.Password = sClaveAcceso

                        'Obtiene parametros y carga las prop. de Common
                        Dim parametros As String = "EMPRESA,APPNAME,VERSION "
                        Dim param As New StartFrame.BR.Utilitarios.Parametros

                        Dim valores() As String = param.getParametro(parametros).Split(","c)

                        Common.Env.Empresa = valores(0)
                        Common.Env.AppName = valores(1)
                        Common.Env.AppVersion = valores(2)

                        'Logueo exitoso!

                        'Crear usuario
                        Dim aParametros As New ArrayList

                        'Nombre de usuario
                        aParametros.Add(CrearUsuario.UserName)
                        'Password encripatada
                        aParametros.Add(SystemFunctions.Strings.EncryptString(CrearUsuario.Password, KEY, SystemFunctions.Strings.Accion.ENCRYPT))

                        Sql.ExecSP(ConnectionString, "wp_nuevo_usuario", aParametros)

                        'Desloguearse
                        sca.Logout(sUsuario)
                    Else
                        'Error en logueo

                    End If

                End If
            End If

        Catch ex As Exception

        End Try

    End Sub

#End Region

End Class